Memory arrays hold a plurality of words which often have to be accessed in order. Sometimes, for speed and space reasons, the memory is divided into two halves, as shown in FIG. 1 to which reference is now briefly made. Each of the two halves, labeled 10 and 12, have rows 14 therein in which data in the form of "words" are stored. The first four words, labeled 0-3, are stored in the lowest row 14al of the left half 10, the second four words, labeled 4-7, are stored in lowest row 14ar of the right half 12, the third four words, labeled 8-11, are stored in row 14bl of the left half 10, and the fourth four words, labeled 12-15, are stored in row 14br, etc.
The memory array also includes a main controller 15 which converts an address of a word into associated row and column addresses, a line decoder 16 which selects the same row (14a or 14b) of each of the two halves 10 and 12 as indicated by the main controller 15, separate four-to-one multiplexers (MUX) 18 and 20, each for reading data from their corresponding one of the two halves 10 and 12, separate sense amplifiers 24 and 26, a two-to-one MUX 22 for providing data from one of the two sense amplifiers 24 or 26 and an output buffer 23. For writing data, the memory array includes two precharge and write buffer units 25A and 25B.
To access a word, the main controller 15 first determines which row and column the word is in. Main controller 15 then provides the row address to the line decoder 16, the column address to the proper MUX 18 or 20 and a select signal to the 2:1 MUX 22. The line decoder 16, in turn, activates the word line, labeled 28, connecting the eight words of a row 14 and the MUXs 18, 20 and 22 select the relevant column holding the word of interest. For example, to read word 3, line decoder 16 activates word line 28a, MUX 18 selects the relevant (i.e. the rightmost column) column and MUX 22 selects its left input (from sense amplifier 24). To read word 4, line decoder 16 activates word line 28a, MUX 20 selects the relevant column (i.e. the leftmost column) and MUX 22 selects its right input (from sense amplifier 26). The output buffer 23 provides the data of MUX 22 as the output, labeled "DATA OUT", of the memory array.
Some memories are read in order. To read first word 0 and then word 1, the line decoder 16 has to activate word line 28 twice and MUX 18 has to select two different columns. Thus, two different read operations are required. Similarly, for any two words in the same row of one half 10 or 12 of the memory, two read operations are required. However, reading words 3 and 4 can be done in a single read operation, since the line decoder 16 has to activate the same word line, line 28a, and both of the MUXs 18 and 20 select their respective columns at the same time.
Unfortunately, not all adjacent words in the two halves can be read in a single operation. Adjacent words of different rows require separate read operations. For example, to read words 7 and 8, requires a first read operation in which word line 28a is activated to read word 7 and then a second read operation in which word line 28b is activated to read word 8 Thus, for most neighboring words, consecutive read operations are required.
Similar access operations occur for writing data into the memory halves 10 and 12. The main controller provides the row and column signals to the line decoder 16 and the MUXs 18 and 20, respectively. At the same time, the data to be input, labeled "DATA IN", is provided to the precharge and write buffer units 25A and 25B. Due to the access operations of the MUXs 18 and 20 and the line decoder 16, the data will then be entered into the appropriate word.
U.S. Pat. No. 5,502,683 to Marchioro describes a dual ported memory which accesses multiple words in the memory array. To do so, it has word line switches at the boundaries of each word. When a switch is activated, it splits its row of words into left and right sections one of which is active and one of which is not. Furthermore, the switch connects the right section of its word line to the left section of the next adjacent word line. Thus, if the right section of a word line is activated, so will be the left section of the next adjacent word line. The data in the active sections is read.